1. Field of the Invention
The present invention relates generally to event stream processing systems and, more specifically, to a computer implemented method system and computer usable program code for providing transactional quality of service in event stream processing middleware.
2. Description of the Related Art
Conventional messaging middleware supports simple queuing, routing and filtering of events delivered from producers to consumers. Event stream processing systems extend this capability by allowing consumers to write continuous queries over one or more event streams from producers, and receive results that are continuously updated as new events are received or, in some circumstances, as time passes without new events arriving.
In an event stream processing system, consumers can request views defined via either stateless or stateful functions of stream histories. A stateful function is a function wherein the processing of each event in a stream may depend upon previous events from that stream or from a different stream. Stateful functions include, for example, joins, aggregations, and top-k. Sample queries may include, “tell me the average trading price of the 10 highest-volume trading issues”, or “alert me whenever two ATM transactions from the same customer appear at different ATMs within an excessively short time window.”
Event stream processing queries are deployed over a long time period, and their results are constantly refreshed in near real-time. Producers and consumers can be remote; and event stream processing middleware is responsible for generating and deploying an appropriate query execution plan, and for recovering from network and server failures.
A unique quality of service introduced for event stream processing systems is a rigorous safety and liveness service guarantee called “eventual correctness.” Eventual correctness is a counterpart to the ACID (Atomicity, Consistency, Isolation, Durability) guarantee of databases, but is more practical for highly scaled and widely distributed systems. Event stream processing systems such as the “SMILE” (Smart Middleware, Light Ends) event stream processing system have incorporated mechanisms for achieving this eventual correctness guarantee in the presence of server and link failures.
As a result of the success of event stream processing systems, sometimes also referred to herein as “event streaming systems”, demands have arisen to integrate such systems with other systems, such as application server systems, enterprise service bus systems, and transactional object store systems.
The integration of an event streaming system with a transactional object store system, in particular, presents challenges as the two systems have very distinct quality of service guarantees. A transactional object store, as implied by its name, guarantees a full transactional quality of service for its applications; while an event streaming system may, as indicated above, support the eventual correctness guarantee. When the two systems are integrated, updates to certain objects generate events for the streams; and derived views are then reflected back to appear as derived objects. This presents no problem so long as there are two distinct kinds of applications: (1) object store transactions that read and write original objects and receive a transactional quality of service, and (2) continuous query subscribers that receive continuous updates to derived views and receive an eventual correctness quality of service.
An emerging requirement, however, is for applications that may wish to access both original and derived objects. Such applications expect transactional consistency for all objects they access whether original or derived. A need exists, therefore, for a mechanism that will achieve a transactional guarantee and, at the same time, preserve the asynchronous nature of stream processing systems in an implementation of a combined event stream processing and transactional object store system.